package com.shenfa.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.shenfa.bean.FoldOut;
import com.shenfa.bean.FoldoutProd;
import com.shenfa.bean.FoldoutProdB;
import com.shenfa.bean.TreeNode;

/**
 * 插页数据库操作类
 * 
 * @author yanglong
 * 
 * @date 2011-8-23
 *
 */
@SuppressWarnings("unchecked")
public class FoldOutDao {
	
	@Autowired
	private SqlMapClient sqlMapClient;

	/**
	 * 根据对象条件查询插页列表
	 * @return	插页列表
	 */
	public List<FoldOut> getList(FoldOut t, int start, int limit) {
		List<FoldOut> list = new ArrayList<FoldOut>();
		try {
			list = sqlMapClient.queryForList("foldout_manager.getList", t, start, limit);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	public int getListCount(FoldOut t) {
		Object obj;
		try {
			obj= sqlMapClient.queryForObject("foldout_manager.getListCount", t);
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
		if(null!=obj){
			return (Integer)obj;
		}else{
			return 0;
		}
		
	}
	
	/**
	 * 添加插页
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int add(FoldOut t) {
		try {
			sqlMapClient.insert("foldout_manager.add", t);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * 删除插页
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int del(FoldOut t) {
		try {
			sqlMapClient.delete("foldout_manager.del", t);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * 修改插页
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int upd(FoldOut t) {
		try {
			sqlMapClient.update("foldout_manager.upd", t);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 根据卡号查询插页详细信息
	 * @param cardid
	 * @return
	 */
	public List<FoldoutProd> listByCard(FoldoutProd foldoutprod,int skipResults,int maxRsults){
		List<FoldoutProd> list = new ArrayList<FoldoutProd>();
		try {
			list = sqlMapClient.queryForList("foldout_prod.listByCard",foldoutprod,skipResults,maxRsults);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	
	public int queryCountlbc(FoldoutProd foldoutprod){
		try {
			return (Integer)sqlMapClient.queryForObject("foldout_prod.queryCountlbc",foldoutprod);
		} catch (SQLException e) {
			e.printStackTrace();
			return -1;
		}
	}
	
	/**
	 * 查询个性化插槽详情
	 * @param cardid
	 * @return
	 */
	public List<FoldoutProdB> listFoldoutDetails(FoldoutProd foldOut){
		List<FoldoutProdB> list = new ArrayList<FoldoutProdB>();
		try {
			list = sqlMapClient.queryForList("foldout_prod.listFoldoutDetails",foldOut);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	
	/**
	 * 查询个性化插页所有账单日
	 * @param cardid
	 * @return
	 */
	public  List<FoldoutProd> listFoldoutperiod(int skipResults,int maxRsults){
		List<FoldoutProd> list = new ArrayList<FoldoutProd>();
		try {
			list = sqlMapClient.queryForList("foldout_prod.listFoldoutperiod",skipResults,maxRsults);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	/**
	 * 添加插页时 向	T_S_FOLDOUT_PROD插入
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	
	public void addFoldOut_to_prod(Map<String,String> map) {
		try {
			sqlMapClient.insert("foldout_manager.saveFoldout_to_FoldoutPord", map);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 查询关联的个性化插槽
	 * @param map
	 * @return
	 */
	public List<Map<String,String>> getFoldoutBySub(FoldOut t) {
		List<Map<String,String>> list=new ArrayList<Map<String,String>>();
		try {
			list=sqlMapClient.queryForList("foldout_manager.get_foldout_sub", t);
			return list;
		} catch (SQLException e) {
			e.printStackTrace();
			return list;
		}
	}
	
	/**
	 * 删除插页时 向	T_S_FOLDOUT_PROr删除
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int delFoldOut_to_prod(Map map) {
		try {
			sqlMapClient.delete("foldout_manager.delFoldout_to_FoldoutPord", map);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 修改插页时 向	T_S_FOLDOUT_PROD修改
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int updateFoldOut_to_prod(Map map) {
		try {
			sqlMapClient.update("foldout_manager.updateFoldout_to_FoldoutPord", map);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 查询外包商
	 * @param cardid
	 * @return
	 */
	public  List<TreeNode> listEpiboly(){
		List<TreeNode> list = new ArrayList<TreeNode>();
		try {
			list = sqlMapClient.queryForList("foldout_prod.getepibolyList");
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}

	/**
	 * 修改[插页与产品关系从表
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int updtsfp(FoldoutProdB fpb) {
		try {
			sqlMapClient.update("foldout_prod.edit_tsfp", fpb);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 删除[插页与产品关系从表
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int deltsfp(FoldoutProdB fpb) {
		try {
			sqlMapClient.delete("foldout_prod.delete_tsfps", fpb);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 根据卡号删除个性化模块中   插页详细信息
	 * @param cardid
	 * @return
	 */
	public int delete_tsfps(FoldoutProd foldoutprod){
		
		try {
			sqlMapClient.delete("foldout_prod.delete_tsfps",foldoutprod);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 修改[插页与产品关系主表
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int edit_tsfps(FoldoutProd fp) {
		try {
			sqlMapClient.update("foldout_prod.edit_tsfps", fp);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	/**
	 * 增加[插页与产品关系主表
	 * @param t	插页对象
	 * @return	1成功，0失败
	 */
	public int add_tsfps(FoldoutProd fp) {
		try {
			sqlMapClient.update("foldout_prod.add_tsfps", fp);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	
	/**
	 * //验证账期时间的合法性
	 * @param t	插页对象
	 * @return	等于0 表示合法，等于大于1 表示不合法
	 */
	public int focedate(FoldoutProd fp)
	{		
		 try {
		     return (Integer)sqlMapClient.queryForObject("foldout_prod.focedate", fp);
		
		} catch (SQLException e) {
			e.printStackTrace();
			return 1;
		}
	}
	/**
	 * //验证插槽管理 增加功能中  提交插槽号时候验证是否存在
	 * @param t	插页对象
	 * @return	返回int  大于等于1时候 表示有同样的编号
	 */
	public int focefoldoutid(FoldOut t)
	{
		int a;
		try {
			a = Integer.parseInt(sqlMapClient.queryForObject("foldout_manager.focefoldoutid", t).toString());
		} catch (SQLException e) {
			e.printStackTrace();
			return 1;
		}
		return a;
	}
	/**
	 * 增加功能块中对插页和产品关系从表的批量增加
	 * @param t	插页对象
	 * @return	返回int
	 */
	public int addfoldpb(FoldoutProdB fpb)
	{
		try {
			sqlMapClient.insert("foldout_prod.addfoldpb", fpb);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
}
